Magnetic storage systems such as disk drives include a magnetic medium or platter with a magnetic coating that is divided into data tracks. The data tracks are divided into data sectors that store fixed-sized data blocks. A read/write head typically includes a write circuit and write element such as an inductor that selectively generates positive and negative magnetic fields that are stored by the magnetic medium. The stored positive and negative fields represent binary ones and zeros. The read/write head includes an element such as a magneto-resistive element that senses the stored magnetic field to read data from the magnetic medium. A spindle motor rotates the platter and an actuator arm positions the read/write head relative to the magnetic medium.
Magnetic storage systems typically code the user data sequence or user data using Run Length Limited (RLL) code. RLL coding reduces sequences in the user data that may cause problems with timing circuits of the magnetic storage system. For example, a RLL code enforces constraints on the number of consecutive ones and/or zeros that are allowed to occur in the data. The efficiency of the RLL code is typically measured in terms of a code rate. For every m-bits or m-bytes of user data, an n-bit or n-byte encoded word is written to the storage media. RLL codes are used to eliminate unwanted bit patterns in the data and typically do not have error correction capability. RLL coding, however, reduces data storage capacity by increasing channel bit density (CBD), which reduces a signal to noise ratio (SNR) and may lead to lower reliability.
Referring now to FIG. 1, a write-path of a data storage system with RLL coding is shown. A host bus interface (HBI) 14 receives user data from a host computer 16. A buffer manager (BM) 18 initially stores the user data in a buffer 20 and then sends the user data from the buffer 20 to a disk formatter (DF) 22 with proper timing. An ECC/CRC encoder 24 appends CRC bits to the user data. The CRC bits are calculated based on the user data. ECC bits are computed based on the user data and the CRC bits and appended thereto. A scrambler 26 generates a pseudo-random scrambling sequence that is based on a polynomial and seed. The user data and the scrambling sequence are input to an XOR gate 27, which outputs scrambled user data. A RLL encoder 28 is used to constrain the unwanted bit patterns in the scrambled user data sequence.
To increase SNR and data storage capacity, data storage systems were developed without RLL coding using data-dependent scramblers (DDS). Data is processed by the DDS to eliminate unwanted bit patterns. The DDS is disclosed in “Improved Data Coding For Enforcing Constraints On Ones and Zeros In a Communications Channel”, U.S. patent application Ser. No. 10/423,552, filed Apr. 25, 2003, which is commonly assigned and is hereby incorporated by reference in its entirety. The scrambled user data from the DDS is forwarded to an ECC/CRC encoder, which generates and appends CRC and ECC bits to the DDS coded user data.
Because the CRC and ECC bits may also contain unwanted bit patterns, traditional RLL coding may be used to encode the ECC/CRC portion. The data storage system is still referred to as being without RLL coding because the CRC and/or ECC bits are relatively small in number as compared to the number of bits in the user data. In data storage systems without RLL coding, the CRC bits are generated and appended by the ECC/CRC encoder. Because the ECC/CRC encoder is located downstream from other devices, such as the disk formatter (DF), the buffer manager (BM), the buffer, etc., the CRC bits that are generated do not detect errors that are generated in these devices.
Referring now to FIG. 2, a write-path of a data storage system that includes the DDS is shown. The host computer 16 generates user data that is transferred to the host bus interface (HBI) 14. The buffer manager (BM) 18 receives the user data from the HBI 14 and controls the data flow through the write path. The user data is periodically stored in the buffer 20. The BM 18 passes the user data on based on sequence timing of data flow through the write path. The disk formatter (DF) 22 receives the user data from the BM 18 and formats the user data.
A data dependent scrambler (DDS) 40 receives the user data from the DF 22 and scrambles the user data using a data dependent scrambling seed (S) to eliminate the unwanted bit patterns. Other encoding and/or scrambling may optionally be performed to improve the Hamming weight of adjacent symbols using an H-code token (H) and/or to limit the number of zeros in interleaved subsequences. The scrambling seed (S) and the H-code token (H) are appended to the user data sequence, which increases overhead. An ECC/CRC encoder 42 appends CRC bits that are calculated based on the scrambled user data. ECC bits are also computed based on the scrambled user data and the CRC bits and appended to the scrambled user data.
If the DDS performs H-code coding and data dependent scrambling, the DDS needs to append the scrambling seed (S) and the H-code token (H) to the user data sequence. For example, when the user data corresponds to a sector including 4096 bits arranged as 410 10 bit symbols, the DDS coding rate is equivalent to a 410/412 RLL code. As can be appreciated further reductions to the overhead would be desirable.